home *** CD-ROM | disk | FTP | other *** search
/ Netware Super Library / Netware Super Library.iso / inet_tcp / fxuuci / tech.doc < prev    next >
Text File  |  1994-09-25  |  13KB  |  283 lines

  1. TECHNICAL GUIDE to FX Uucico                                 version 1.0
  2. FX UUCICO is Copyright (c) 1993, 1994 by Jorge Cwik. All rights reserved.
  3. <jorge@satlink.net>
  4.  
  5. This documentation describes topics for advanced users and programmers
  6. wanting to implement custom interfaces with FX Uucico. We are constantly
  7. updating this notes acoording to quieres we receive. Check our server for
  8. for the lastest update. ('help' to fx-dist@uufx.net)
  9.  
  10.  
  11.               I.     NETWORKING
  12.               II.    MULTITASKING
  13.               III.   16550A FIFO UARTS
  14.               IV.    TELEBIT modems
  15.               V.     EXIT LEVELS
  16.               VI.    STATUS files
  17.               VII.   SECURITY
  18.               VIII.  LIMITS AND MEMORY USAGE
  19.               IX.    CUSTOM INTERFACES WITH FX UUCICO
  20.  
  21.  
  22. I.     NETWORKING
  23.  
  24. FX Uucico is fully networkable, you can run multiple uucicos concurrently
  25. over a network, without any kind of conflict between them. FX will manage
  26. all contention automatically.
  27.  
  28. From FX point of view, networking means 'sharing', running multiple Uucicos
  29. in the same file system. Running it over a network doesn't neccessarily
  30. implies sharing if used in single user mode. Multitasking two or more
  31. Uucicos on the same machine has the same sharing effect as a network. You
  32. usually need to load SHARE under DOS and peer to peer networks, but it is 
  33. normally not needed in Netware and other Client/Serves NOSes. It is always
  34. implicitely loaded in WinNT and OS/2.
  35.  
  36. All configuration files are accessed in shared mode, which means that you
  37. don't need to make them 'read only'. Writable files and jobs are accessed
  38. in exclusive mode. Note that other Waffle's uucp utilities are not 'share'
  39. aware, and can be networked in a limited fashion only. Configuration files
  40. accessed by them should still be 'read only' (static, systems, paths, etc).
  41.  
  42. Receiving *.X files are written in a temporay file, they are renamed only
  43. after they are complete. This will prevent UUXQT from trying to execute
  44. commands before they are ready. The 'debug' and 'uucico' logs aren't any
  45. more appended with the channel parameter. FX writes a different log per
  46. session and later append it to the main file. Host are locked during the
  47. connection, locked host are skipped by concurrent polls. An incoming call
  48. to a locked system will be rejected as per uucp standard.
  49.  
  50. FX uucico doesn't need different channel parameters. It still uses it as
  51. a flag to enable its sharing features, When 'channel' is not found in the
  52. 'static' file, FX will optimize performance for standard operation. At this
  53. release, the optimization is done in two points: *.X files aren't saved with
  54. a temporary name, and logs are written directly to the main file. Note that
  55. the actual content of the 'channel' parameter is not used at all, it may be
  56. blank. Other Waffle's program do need channels. The 'fx.share' configuration
  57. option can be used to override sharing, independently of channel.
  58.  
  59. If you multitask more than one Uucico in the same machine, you must take
  60. care that they do not try to access the same port at the same time. FX
  61. doesn't currently lock ports.
  62.  
  63.  
  64. II.    MULTITASKING
  65.  
  66. By default, the software releases its time-slice when idle. The method
  67. used is compatible with DesqView, Windows, OS/2, WinNT, and others.
  68.  
  69. Releasing time-slice will help other multitasking software. It could be
  70. very important when running multiple FX copies concurrently. Specially
  71. if some drive a low speed and others a high speed connection.
  72.  
  73. It is normally not a good idea to let the operating system controlling
  74. FX time-slices. Specifically we recommend to NOT enable the "detect idle
  75. time" under Windows.
  76.  
  77. You may disable FX time-slice releasing with the option 'fx.multitask'.
  78.  
  79. Some multitaskers will automatically return control to a program receiving
  80. a hardware interrupt. In our case, an incoming byte from the serial port
  81. would wake-up FX task immediately. But some others fail to do this context
  82. switch, in those cases you may get better results by disabling fx.multitask.
  83.  
  84.  
  85. III.   16550A FIFO UARTS
  86.  
  87. The -z switch controls the internal driver buffering for the FIFO. The
  88. syntax is -z<bytes>, where bytes is the trigger setting in the uart. To
  89. disable the FIFO uart entirely use -z0. Using any other value, will bypass
  90. FIFO autodetecion, FX will _force_ the internal driver to enter FIFO mode.
  91. This may be helpful for not fully compatible UARTS and in some virtual
  92. environments.
  93.  
  94. In some multitasking/networking environments, using the full FIFO buffers
  95. at high DTE speed may produce data loss. If you experiment 'Rx' errors
  96. with the FIFO in full mode, you may 'trigger' interrupts with FIFO buffers
  97. partially full. Using -z1 (which is not the same as -z0) will give the
  98. maximum reliabiity to the system.
  99.  
  100. Most setups don't need to mess with this parameter at all. It is used by
  101. the internal driver only, and disregared in FOSSIL mode.
  102.  
  103.  
  104. IV.    TELEBIT modems
  105.  
  106. TELEBIT are very powerful modems very popular in UUCP hosts. 'Wordlblazer', 
  107. the latest model at this moment, is an excellent choice. If both sides are 
  108. using FX UUCICO you would be foolish not to use the 'y' protocol, you would 
  109. get unbelievable throughput. We reached 2670 cps in compressed news between 
  110. two 'Wordblazers'.
  111.  
  112. Otherwise, you must use 64 bytes packet size to activate the modem 'spoofing'. 
  113. Without the spoofing these modems are very slow. The TELEBITs modem will not 
  114. spoof if _any_ of both sides requests packets size that are not 64 bytes. 
  115. Window size doesn't matter.
  116.  
  117. In long delay lines (like international calls), it may be better to do one of 
  118. these: 
  119.  
  120.    To transmit ascii non-compressed files, use protocol 'f'. If the other side 
  121.    supports it, use 4Kb packet; the modems will not spoof, but you may get bet-
  122.    ter performance. If the quality of the line is good, try to connect in V32b 
  123.    ('Worldblazers' only).
  124.  
  125. NOTE:
  126.  
  127.    The latest Telebit ROMs implement an "enhanced spoofing", which
  128.    spoofs large packets and windows 7. FX fully supports this new
  129.    enhanced spoofing in any packet size and windows combination.
  130.  
  131.  
  132. V.     EXIT LEVELS
  133.  
  134. If 'fx.wQuirks' is on, FX Uucico returns 0 when one or more connections
  135. were successfull, otherwise returns 1. Successfull means that the uucp
  136. handshake has been acomplished. These values can be overriden with the
  137. options "uu.exit and "uu.fail" respectively.
  138.  
  139. When 'fx.wQuirks' is off, FX returns 0 when the connection has been
  140. completed, and one when it should be retried. Reasons for retries could
  141. be failed scripts, loss of carrier, fatal timeouts, etc. If multiple
  142. connections are requested with -s all or -s any, the exit level reflects
  143. the status of the last connection attempted. Note that no connections due
  144. to no queued jobs is interpreted as successfull.
  145.  
  146. FX may abort with higher exit levels, typically two or three, because of
  147. configuration or I/O errors. Examples are, invalid parameters, some file
  148. errors, or other unexpected situation.
  149.  
  150. If you need to know the precise reason and connection exit status, examine
  151. the STATUS file documented below.
  152.  
  153.  
  154. VI.    STATUS files
  155.  
  156. The format of these files have been completely changed. They are used for
  157. two purposes, status and statistics. The 'uutraff' program, available
  158. from our server, decodes these files and build several types of reports.
  159. The format of these files, which is in binary, is available upon request.
  160. You will trash the accumalated statistics if you mix incompatibles Uucicos,
  161. but nothing else would be damaged though.
  162.  
  163.  
  164. VII.   SECURITY
  165.  
  166. If you only poll other hosts and you don't receive incoming calls,
  167. security is not a major issue. But when you operate Uucico as the
  168. gate for an uucp server, and specialy when run unattended, you should
  169. take care of possible security holes.
  170.  
  171. Uucp is not a fully secure protocol, yet with correct configuration
  172. it would be enough to satisfy your normal security needs.
  173.  
  174. Two major options control which kind of access Uucico grants to remote
  175. calls. The upload and download permits entries specifies which directories
  176. are available besides the spool. Leaving both enties blank, will deny
  177. any _remote_ request for uploading or downloading outside the spool.
  178.  
  179. The second issue is how to inforce that each host will 'take' its own
  180. traffic and not other's one. Uucico by itself has now way to verify
  181. if the remote host is the one it claims it is. This situation arises
  182. because dial-in login is performed by other software, not by uucico.
  183. If one valid uucp user enters the server with its own login name and
  184. password, it may impersonate other system by using a different uucpname.
  185.  
  186. The solution has two steps. One is to link both pieces of software. The
  187. front-end program must tell uucico the login name he verified with password.
  188. The second step is to build a table that relate each login name to the
  189. corresponding uucpname (or host).
  190.  
  191. For the first step, FX accepts the -u parameter that specifies the user
  192. login name: "uucico -r0 -u <login_name>". If you are using waffle.exe
  193. as your front-end program, use the %A variable.
  194.  
  195. The user name vs. uucpname table is done in the 'permits' file. For _each_
  196. on of the host in 'systems' add an entry as the following one:
  197.  
  198. laser     /account=ulaser
  199.  
  200. Where 'laser' is the uucpname and 'ulaser' the login name. When FX
  201. receives a call from a system that call itself 'laser', it will scan
  202. for a 'permits' entry with the same name. Then, _if_ the -u parameter
  203. has been passed on the command line _and_ there is an 'account' keyword
  204. on the permit entry, FX will verify if they match. If they don't access
  205. will not be granted and the connection will be rejected.
  206.  
  207. Notes:
  208.  
  209.    Don't use the -p parameter. This will force FX to use a specific
  210.    'permits' entry and will disable the autolookup.
  211.  
  212.    The login name and password in the 'systems' file are not used in
  213.    dial-in calls. They are the ones for accessing the remote host when
  214.    _you_ call him, and not viceversa.
  215.  
  216.    There are other options in 'permits' that may be usefull for safety
  217.    and security measures.
  218.  
  219.  
  220. VIII.  LIMITS AND MEMORY USAGE
  221.  
  222. There is no formal limit for the number of sytems, scripts, dialers
  223. and permits. We have been running a host with over 200 uucp accounts.
  224.  
  225. The routines that read the configuration files have a finit limited
  226. buffer. But using line continuation, there is no formal limit to the
  227. total length.
  228.  
  229. FX doesn't requiere large amounts of memory. The exact number of bytes
  230. depend on many parameters, and obviouslly also slightly change among
  231. releases. The bare minimum is around the 80 kilobytes. But FX will
  232. never use more than 150 kb. There is not much point to have more that
  233. 200 kb free before running this FX uucico release.
  234.  
  235.  
  236. IX.    CUSTOM INTERFACES WITH FX UUCICO
  237.  
  238. We strongly recommend you use Uux for spooling jobs. FX Uux is rather small
  239. and fast, the overhead is very little in comparison with the full compatibi-
  240. lity you gain.
  241.  
  242. Uucico scans the spool for workfiles. Each known host has a personal
  243. directory under <spool>, both outgoing and incoming jobs are placed
  244. here. All outgoing jobs have a workfile with precise instructions for
  245. Uucico. They are in ASCII text and have a conventional extension of 'CMD'.
  246. Empty workfiles are allowed and they serve the purpose of forcing a poll
  247. to a particular host. Each line in the workfile represent a single file
  248. transaction, normally to send a data file to the remote host.
  249.  
  250. Most jobs normally have one or more data files associated. Lines on the
  251. workfiles point to the neccessary data files. In many cases, one of the
  252. data file is actually an execution file, to be intrepreted by the remote
  253. host uucp (uuxqt program). FX Uucico supports 'E'xecution requests, they
  254. avoid the transmission of the execution file. Incoming execution commands
  255. are automatically converted to the standard format. Outgoing ones are
  256. processed differently between hosts that support Exec request and those
  257. who not. When the remote uucico doesn't support them, FX transforms the
  258. request to traditional 'S' commands on the fly. Everything is handled
  259. transparently and automatically, no external intervention is needed.
  260. Workfiles with Execution requests have a different format, see the the FX
  261. Uucp documentation.
  262.  
  263.  
  264. Those that write programs that parse the logs created by Uucico, should
  265. take special consideration to achieve maximum compatibility in future
  266. releases. Try to allow as many changes as possible, many improvements in
  267. the logging were not implemented because they breaked third party utilities.
  268.  
  269. For example if you parse a time field, let your code handle different
  270. compatible formats like 20:13 and 20:13.45 . Do not assume a fixed amount
  271. of spaces between tokens, perform string comparison without regarding case,
  272. etc.
  273.  
  274. All files you don't modify should be accessed in read only mode with
  275. deny none or deny write mode. Do not keep locks for extended periods of
  276. time.
  277.  
  278. Incoming jobs are munged. Munging is the process of converting those Unix
  279. filenames (D.laserC0123), to DOS conventions (0C01234.D). The munging
  280. algorythm is documented with C source code in a small archive, fxmunge.zip,
  281. available from our servers.
  282.  
  283.